package domein;

import persistentie.GebruikerMapper;
import exceptions.*;

/**
* @author Stijn Vannieuwenhuyse
*/
public final class GebruikerController {
	
	/**
	 * Deze variabele zorgt voor het tijdelijk opslaan van alle Gebruikers-objecten in het systeem.
	 */
	private GebruikerMapper gebruikerslijst = new GebruikerMapper();
	private Gebruiker huidigeGebruiker;
	
	public GebruikerController() {
	}
	
	/**
	 * Deze methode zoekt in de databank naar een persoon met de gegeven gebruikersnaam en geeft indien mogelijk dit object terug.
	 * Indien geen overeenkomstige persoon gevonden wordt, resulteert deze methode in een WrongLoginException.
	 * @param 	Gebruikersnaam	De gebruikersnaam van de persoon die dient aangemeld te worden.
	 * @return 	Gebruiker		Een nieuw Gebruik-object van de gevonden gebruiker.
	 * @throws 	WrongLoginException	Als de gegeven gebruikersnaam niet voorkomt in de databank.
	 * @see		WrongLoginException
	 */
	public final Gebruiker aanmelden(String gebruikersnaam, String wachtwoord) throws WrongLoginException, WrongPasswordException, Exception {
		try{
			this.setHuidigeGebruiker(gebruikerslijst.getGebruiker(gebruikersnaam));
			if(!wachtwoord.equals(this.getHuidigeGebruiker().getWachtwoord())){
				throw new WrongPasswordException();
			}
			return this.getHuidigeGebruiker();
		}
		catch(WrongLoginException loginError){
			throw loginError;
		}
		catch(WrongPasswordException passwordError){
			throw passwordError;
		}
		catch(Exception e){
			throw e;
		}
	}
	
	public final Gebruiker getHuidigeGebruiker() {
		return this.huidigeGebruiker;
	}
	
	public final void setHuidigeGebruiker(Gebruiker huidigeGebruiker) {
		this.huidigeGebruiker = huidigeGebruiker;
	}
	
}

